package com.example.mybatisplus.generate;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * @author ayatsuji
 * @date 2022-03-03 22:13
 * @since
 */
public class Generator {
    public static void main(String[] args) {
        String jdbc = "jdbc:mysql://localhost:3306/mysql";
        String username = "root";
        String password = "root";
        String projectDir = System.getProperty("user.dir");  // 这个是项目位置，就是java_demo的绝对路径
        String outputCodeLocation = projectDir + "\\mybatisplus\\src\\main\\java";
        String outputMapperXmlLocation = projectDir + "\\mybatisplus\\src\\main\\resources\\mapper";

        // 需要生成代码的表名
        List<String> targetTableName = Arrays.asList(
                "user"
        );

        FastAutoGenerator.create(jdbc, username, password)
                .globalConfig(builder -> {
                    builder.author("ayatsuji") // 设置类注释上的作者
                            .fileOverride() // 覆盖已生成文件
                            .outputDir(outputCodeLocation); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.example.mybatisplus") // 设置父包名，生成的service、entity等包就放在这个包下
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, outputMapperXmlLocation)); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude(targetTableName); // 设置需要生成的表名
                })
                .templateConfig(builder -> {
                    builder.controller("");  // 设置模板路径为空串就不会生成对应类，比如这里就不会生成controller的类
                })
                .execute();

    }
}
